﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using Telecom.Service;
using TelecomGis.Helper.Control;
using Telecom.Data;

namespace TelecomGis.Controllers
{
    public class DanhmucController : ContronllerBase
    {
        private readonly donviToSer _donviToSer = new donviToSer();
        private readonly quanhuyenPhuongXaSer _quanhuyenPhuongXaSer = new quanhuyenPhuongXaSer();
        //
        // GET: /Danhmuc/


        #region DV-TOLT-PX
        
        

        public ActionResult Donvi()
        {
            return PartialView("_Donvi");
        }

        public ActionResult ListDonVi()
        {
            var _listEntity = _donviToSer.getListDV();
            return Json(new { Result = "OK", Records = _listEntity, TotalRecordCount = _listEntity.Count() }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult ListToQuanLy(string maDV)
        {
            var _listEntity = _donviToSer.getListByDonViId(maDV);
            return Json(new { Result = "OK", Records = _listEntity, TotalRecordCount = _listEntity.Count() }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult ListPhuongXaByTo(string toQl)
        {
            var _listEntity = _quanhuyenPhuongXaSer.getList_PX_By_ToQL(toQl);
            return Json(new { Result = "OK", Records = _listEntity, TotalRecordCount = _listEntity.Count() }, JsonRequestBehavior.AllowGet);
        }
        
        [HttpPost]
        public JsonResult DeleteToQuanLy(string MA)
        {
            try
            {
                Thread.Sleep(50);
                _donviToSer.DeleteToQL(MA);
                return Json(new { Result = "OK" });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }

        public ActionResult AddDonVi()
        {
            Telecom.Data.DONVI model = new Telecom.Data.DONVI();
            return PartialView("_AddDonVi", model);
        }

        public ActionResult UpdateDonVi(string maDV)
        {
            Telecom.Data.DONVI model = _donviToSer.get_DV_ById(maDV);
            return PartialView("_UpdateDonVi", model);
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddDonVi(Telecom.Data.DONVI model)
        {
            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã đơn vị");
            }

            if (model.MA.Length > 3)
            {
                return JsonError("Vui lòng nhập mã đơn vị chỉ được 3 ký tự");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng tên mã đơn vị");
            }

            model.MA = model.MA.ToUpper();
            _donviToSer.AdDonVi(model);

            return JsonSuccess("");
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult UpdateDonVi(Telecom.Data.DONVI model)
        {
            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã đơn vị");
            }

            if (model.MA.Length > 3)
            {
                return JsonError("Vui lòng nhập mã đơn vị chỉ được 3 ký tự");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng tên mã đơn vị");
            }

            model.MA = model.MA.ToUpper();
            _donviToSer.UpdateDonVi(model);

            return JsonSuccess("");
        }

        [HttpPost]
        public JsonResult DeleteDonVi(string MA)
        {
            try
            {
                Thread.Sleep(50);
                _donviToSer.DeleteDonVi(MA);
                return Json(new { Result = "OK" });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }

        public ActionResult AddTOKT(string maDV, string nameDv)
        {
            TOKT model = new TOKT();
            model.DONVI = maDV;
            ViewBag.NameDonViAdToKT = nameDv;

            return PartialView("_AddTOKT", model);

        }

        public ActionResult UpdateTOKT(string toktId, string nameDv)
        {
            TOKT model = _donviToSer.get_To_ById(toktId);
            ViewBag.NameDonViAdToKT = nameDv;

            return PartialView("_UpdateTOKT", model);

        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddTOKT(Telecom.Data.TOKT model)
        {
            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã tổ kỹ thuật");
            }

            if (model.MA.Length > 4)
            {
                return JsonError("Vui lòng nhập mã kỹ thụaa chỉ được 4 ký tự");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng tên tổ kỹ thuật");
            }

            model.MA = model.MA.ToUpper();
            _donviToSer.AdTOKT(model);

            return JsonSuccess("");
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult UpdateTOKT(Telecom.Data.TOKT model)
        {
            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã tổ kỹ thuật");
            }

            if (model.MA.Length > 4)
            {
                return JsonError("Vui lòng nhập mã kỹ thụaa chỉ được 4 ký tự");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng tên tổ kỹ thuật");
            }

            model.MA = model.MA.ToUpper();
            _donviToSer.UpdateTOKT(model);

            return JsonSuccess("");
        }


        public ActionResult AddPhuongXaToKy(string madV, string nameDv, string toktId, string nameTOKT)
        {
            TO_PHUONGXA model = new TO_PHUONGXA();
            model.ID = 0;
            model.TOID = toktId;

            ViewBag.MaDonViAddPhuong = madV;
            ViewBag.NameDonVToKT_Ad_PX = nameDv + " - " + nameTOKT;

            return PartialView("_AddPhuongXaToKy", model);
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddTOKT_PHUONG(TO_PHUONGXA model)
        {
            if (string.IsNullOrEmpty(model.PHUONGXAID))
            {
                return JsonError("Vui lòng chọn phường xã ");
            }

            bool checkQH = _quanhuyenPhuongXaSer.checkPhuongXaOnTo(model.TOID, model.PHUONGXAID);
            if (checkQH == true)
            {
                return JsonError("Phường xã đã được thêm vào trong tổ KT. Vui lòng chọn phường khác ");
            }


            _donviToSer.addorUpdateTO_PHUONG(model);

            return JsonSuccess("");
        }

        

        public ActionResult UpdatePhuongXaToKy(string maPhuong,string madV, string nameDv, string toktId, string nameTOKT)
        {
            TO_PHUONGXA model = _quanhuyenPhuongXaSer.getTOPHUONGXA(toktId, maPhuong);
            
            ViewBag.MaDonViAddPhuong_up = madV;
            ViewBag.NameDonVToKT_UP_PX = nameDv + " - " + nameTOKT;
            
            var EntityPhuongXa = _quanhuyenPhuongXaSer.GetPhuongXaById(maPhuong);

            ViewBag.QuanHuyenMaUpdate = _quanhuyenPhuongXaSer.GetQuanHuyenById(EntityPhuongXa.MA_QUAN).MA_QUAN;


            return PartialView("_UpdatePhuongXaToKy", model); 

        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult UpdateTOKT_PHUONG(TO_PHUONGXA model)
        {
            if (string.IsNullOrEmpty(model.PHUONGXAID))
            {
                return JsonError("Vui lòng chọn phường xã ");
            }

            var _key_phuong_Xa_old = Request["IdPHuongXaOld"];

            if (_key_phuong_Xa_old != model.PHUONGXAID)
            {

                bool checkQH = _quanhuyenPhuongXaSer.checkPhuongXaOnTo(model.TOID, model.PHUONGXAID);
                if (checkQH == true)
                {
                    return JsonError("Phường xã bạn thay đổi đã có trong tổ KT này. Vui lòng chọn phường khác ");
                }
            }

            _donviToSer.addorUpdateTO_PHUONG(model);

            return JsonSuccess("");
        }
        
        [HttpPost]
        public JsonResult DeletePXToQuanLy(string maTOKT, string MA_PHUONG)
        {
            try
            {
                Thread.Sleep(50);
                _quanhuyenPhuongXaSer.DetelePuongXaOnTo(maTOKT, MA_PHUONG);
                return Json(new { Result = "OK" });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }

        #endregion

    }
}
